'\" t
.\"***************************************************************************
.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
.\" Copyright 1998-2010,2017 Free Software Foundation, Inc.                  *
.\"                                                                          *
.\" Permission is hereby granted, free of charge, to any person obtaining a  *
.\" copy of this software and associated documentation files (the            *
.\" "Software"), to deal in the Software without restriction, including      *
.\" without limitation the rights to use, copy, modify, merge, publish,      *
.\" distribute, distribute with modifications, sublicense, and/or sell       *
.\" copies of the Software, and to permit persons to whom the Software is    *
.\" furnished to do so, subject to the following conditions:                 *
.\"                                                                          *
.\" The above copyright notice and this permission notice shall be included  *
.\" in all copies or substantial portions of the Software.                   *
.\"                                                                          *
.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
.\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
.\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
.\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
.\" THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
.\"                                                                          *
.\" Except as contained in this notice, the name(s) of the above copyright   *
.\" holders shall not be used in advertising or otherwise to promote the     *
.\" sale, use or other dealings in this Software without prior written       *
.\" authorization.                                                           *
.\"***************************************************************************
.\"
.\" $Id: curs_inch.3x,v 1.62 2024/07/27 19:58:17 tom Exp $
.TH inch 3NCURSES 2024-07-27 "ncurses 6.5" "Library calls"
.ie \n(.g \{\
.ds `` \(lq
.ds '' \(rq
.\}
.el \{\
.ie t .ds `` ``
.el   .ds `` ""
.ie t .ds '' ''
.el   .ds '' ""
.\}
.
.de bP
.ie n  .IP \(bu 4
.el    .IP \(bu 2
..
.SH NAME
\fB\%inch\fP,
\fB\%winch\fP,
\fB\%mvinch\fP,
\fB\%mvwinch\fP \-
get a \fIcurses\fR character from a window
.SH SYNOPSIS
.nf
\fB#include <ncursesw/curses.h>
.PP
\fBchtype inch(void);
\fBchtype winch(WINDOW * \fIwin\fP);
\fBchtype mvinch(int \fIy\fP, int \fIx\fP);
\fBchtype mvwinch(WINDOW * \fIwin\fP, int \fIy\fP, int \fIx\fP);
.fi
.SH DESCRIPTION
.B \%winch
returns the
.I curses
character,
including its attributes and color pair identifier,
at the cursor position in the window
.IR win "."
Subsection \*(``Video Attributes\*('' of \fB\%attron\fP(3NCURSES) explains
how to extract these data from a
.IR chtype "."
\fB\%ncurses\fP(3NCURSES) describes the variants of this function.
.SH RETURN VALUE
These functions return
.B OK
on success and
.B ERR
on failure.
.PP
In
.IR \%ncurses ","
they return
return
.B ERR
if
.I win
is
.BR NULL "."
.PP
Functions prefixed with \*(``mv\*('' first perform cursor movement and
fail if the position
.RI ( y ,
.IR x )
is outside the window boundaries.
.SH NOTES
.BR \%inch ,
.BR \%mvinch ,
and
.B \%mvwinch
may be implemented as macros.
.PP
These functions do not fail if the window contains cells of
.I curses
complex characters;
that is,
if they contain characters with codes wider than eight bits
(or greater than 255 as an unsigned decimal integer).
They instead extract only the low-order eight bits of the character code
from the cell.
.SH PORTABILITY
X/Open Curses,
Issue 4 describes these functions.
It specifies no error conditions for them.
.SH HISTORY
The original
.I curses
in 4BSD (1980) defined
.I \%winch
as a macro accessing the
.I \%WINDOW
structure member representing character cell data,
at that time a
.IR char ","
containing only a 7-bit ASCII character code
and a \*(``standout\*(`` attribute bit,
the only one the library supported.
.PP
SVr2
.I curses
(1984)
extended this approach,
widening the character code to eight bits
and permitting several attributes to be combined with it
by storing them together in a
.IR \%chtype ","
an alias of
.IR "unsigned short" "."
.\" ...indirectly through a preprocessor macro named CHTYPE, encouraging
.\" builders to change the typedef to `char` or `long` as desired.  More
.\" innocent times with respect to ABI compatibility concerns... --GBR
Because a macro was used,
its value was not type-checked
as a function return value could have been.
Goodheart documented SVr3 (1987)
.I \%winch
as returning an
.IR int "."
.\" ...but the implementation remained unchanged.
SVr3.1's (1987)
.I \%chtype
became an alias of
.IR "unsigned long" ","
using 16 bits for the character code and
widening the type in practical terms to 32 bits,
as 64-bit Unix systems were not yet in wide use,
and fixed-width integral types would not be standard until ISO C99.
.\" Cray's UNICOS was 1985 (how many shops had Crays?).  DEC OSF/1 for
.\" the Alpha arrived in 1993.  --GBR
SVr3.2 (1988)
added a 6-bit color pair identifier alongside the attributes.
.SH SEE ALSO
\fB\%in_wch\fP(3NCURSES) describes comparable functions of the
.I \%ncurses
library in its wide-character configuration
.RI \%( ncursesw ).
.PP
\fB\%ncurses\fP(3NCURSES),
\fB\%instr\fP(3NCURSES)
